Validators and Checkers
One of the greatest challenges of educators is the evaluation of submissions from learners. They require an extensive amount of time, directly proportional with the number of learners. Automating the evaluation process frees evaluators to work on more creative aspects and also gives the learner a templated, quick way of assessing their skills and knowledge. As such, by using tools to validate and check submissions, we are able to scale the evaluation to a large number of learners. Also, evaluators can now focus on content development and improvement.
For this, Open Education Hub provides vmchecker
, an open source software solution for assignment evaluation.
vmchecker
uses integrations with other tools such as Moodle user interaction, and GitLab for running the code in a containerized Docker-based safe environment.
Currently vmchecker
is targeted and has been used for Computer Science topics.
It can be expanded to other technical topics and potentially, with specific tools for validation, to other topics as well.
Goals
vmchecker
is built to satisfy the goals of the Open Education Hub project.
They are the same goals as the ones set oer-builder
, but tailored for submission checking.
vmchecker
is easy to use and setup by both infrastructure managers, educators and learners.
This can be done through automation, providing setup scripts to allow for automatic setup.
Containers are used in modern software development to use a one button solution for software deployment.
We aim to use containers to allow infrastructure administrators to start the infrastructure with needing a special environment.
Containers also allow local checking using scripts to automate the setup.
As resource usage increases, and demand is increased, vmchecker
is able to scale the amount of submissions that it checks in parallel.
A parallel approach means learners don't have to wait in long queues for assignment checking.
vmchecker
is open source software and is compatible with the Open Educational Resources requirements.
Using open source solutions allows us to quickly discover issues and make updates.
Many education institutions use e-learning platforms to manage classrooms.
These tools allow users to upload materials, evaluate learners, and grade assignments using a single application.
vmchecker
is integrated with existing educational platforms (such as Moodle).
This makes it more appealing to integrate for institutions that already rely on these systems.
Educational institutions need a seamless process from assignment submission to grading in a shared grade book.
Architecture
vmchecker
has been built with a modular architecture, so that it fits the diverse needs of educational institutions.
The figure below displays the minimal components needed in order to have a working vmchecker
service.
The three components in the figure are:
- frontend: receives assignments from students, uploads them to the
vmchecker
middleware and receives the assignment run information after it has finished; - item middleware: receives requests from the frontend and uploads the submission to the checking infrastructure; the infrastructure runs the submission, waits for the result, and then uploads it to the frontend;
- submission runner: receives submission checking requests from the middleware service, runs the submission using a specific recipe.
GitLab was chosen as a hosting platform for Git repositories, as it is a Free and Open Source Solution that can be used as an open online platform, or it can be installed at an institution. A workflow advantage for GitLab is that learners can include educators to a private repository. This makes it easier for learners and educators to debug faulty code together. Because the API is open, the operation of granting educators access can be automated using scripts.
User Scenarios
vmchecker
has been built with scenarios for the user roles:
- Infrastructure managers handle the
vmchecker
installation and ensure a service level agreement, especially during high load situations, such as submission deadlines. - Educators configure repositories for submissions, and integrate them with
vmchecker
. - Learners make use of the submission repositories and the
vmchecker
installation to validate submissions and receive grading.
Each role interacts with vmchecker
through a user-friendly interface.
This is the motivation for using GitLab that already provides the interface adapted for vmchecker
scenarios.
Infrastructure Manager
The infrastructure manager first needs to set up the vmchecker
frontend and middleware.
The vmchecker
Moodle plugin is used as a frontend that can be copied and installed on the Moodle instance.
The middleware is to be set up with all its required services using the Docker containers provided in the vmchecker
repository.
vmchecker
doesn't have to be set up with an institutional GitLab instance, it can also use the official public GitLab instance.
It does not require any specific features that cannot be accessed by regular users using the GitLab REST API.
An institution may want to use their own GitLab instance in order to manage per user limits, or to give users access to more resources, and connect to institutional user management.
Detailed instructions for infrastructure managers are part of the official vmchecker
Moodle Admin Handbook.
Educator
Educators need only interact with the frontend and GitLab to create a submission repository.
The teacher must create a repository based on the template provided by the vmchecker
team.
The cloned Git repository will contain a GitLab CI/CD workflow file which defines the container which will run the submission and the script to run the assignment.
The assignment repository must also contain a src/
directory, which defines the directory in which students will write code.
The Git repository must be private, otherwise students would be able to view the code amongst themselves.
If using Moodle, the educator must create an Assignment
instance and a vmchecker
assignment block, which will attach to the vmchecker
backend.
The assignment block must be configured with the project ID of the aforementioned repository, and an access token so the middleware has permissions to work with the repositories.
Detailed instructions for educators are part of the official vmchecker
Student Handbook.
Learner
Learners interact with vmchecker
in two ways:
- a Moodle-based workflow: upload the work directly through Moodle, that sends it the GitLab backend
- a Git-based workflow: upload work through Git to GitLab, and trigger the validation
In order to work on a submission, students must download the submission template code.
As part of the template, a script (named local.sh
) runs the submission checker inside of the container infrastructure, mirroring the checking environment in GitLab.
The checker script can also be called locally outside of the container.
A learner can upload their source code as part of an archive inside the Moodle assignment activity, and it will launch the checking request. The Git-based checking flow requires learners to push changes directly to GitLab, where the changes committed trigger the GitLab CI/CD workflow.
Detailed instructions for learners are part of the official vmchecker
Student Handbook.
Container Infrastructure
The issue with using the same assignment checking script for many students is that they can have different libraries and applications installed on their systems.
Different environments may lead to certain optimization inconsistencies.
To mitigate this, we recommend teachers setup the checking infrastructure in vmchecker
so that the scripts run inside of a container.
The vmchecker
team provides a minimal template that can be expanded based on individual class needs.
The container infrastructure presents an easier approach than the one seen in current solutions, which either require an internet connection for remote checking, or a virtual machine, which uses more resources. Using containers allows for easier patches to the environment, for example installing a new library, because the changes will be sent incrementally, the student not needing to download a whole new image.
Example vmchecker
Deployments
vmchecker
has been used extensively for the Operating Systems class at the National University of Science and Technology POLITEHNICA of Bucharest (UNSTPB), using the contents of the operating-systems
repository.
The repositories used for the five assignments, plus a template repository, plus a tutorial assignment can be used as examples of repositories for vmchecker
deployment: